Stable release | 3.0.1 / July 31, 2011 |
---|---|
Preview release | 2.9.16 / June 9, 2011 |
Written in | C++ |
Operating system | Cross-platform |
Type | 3D graphics |
License | OpenSceneGraph Public License (LGPL based) |
Website | http://www.openscenegraph.org/ |
OpenSceneGraph is an open source 3D graphics application programming interface,[1] used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling.
The toolkit is written in standard C++ using OpenGL,[1] and runs on a variety of operating systems including Microsoft Windows, Mac OS X, Linux, IRIX, Solaris and FreeBSD.
Development began on OpenScenegraph in 1998 by Don Burns with Robert Osfield coming aboard in 1999[2]. The project doesn't track downloads and has no way to measure the number of active users. However, as of 2006, the osg-users mailing list exceeded 1,500 subscribers.
Contents |
Features in version 1.0[3]:
Features in version 2.8.3[4]
Features in version 2.8.4:
Version | Release Date |
---|---|
2.0.0 | June 15, 2007 |
2.2.0 | October 4, 2007 |
2.4.0 | April 25, 2008 |
2.6.0 | August 5, 2008 |
2.6.1 | October 2, 2008 |
2.8.0 | February 12, 2009 |
2.8.1 | May 19, 2009 |
2.8.2 | July 28, 2009 |
2.8.3 | April 5, 2010 |
2.8.4 | April 11, 2011 |
3.0.0 | June 28, 2011 |
3.0.1 | July 31, 2011 |
The OpenSceneGraph project contains a threading library, OpenThreads, which is a lightweight cross-platform thread model. It is intended to provide a minimal and complete Object-Oriented (OO) thread interface for C++ programmers. It is loosely modeled on the Java thread API, and the POSIX Threads standards.
The architecture of OpenThreads is designed around "swappable" thread models which are defined at compile-time in a shared object library. It is of importance to note that while a factory pattern design could have been used to achieve the goal of generic interface, it would have required the programmer to allocate each of the 4 fundamental types (Thread, Mutex, Barrier, & Condition) on the heap. Due to the cost associated with heap allocation of the underlying concrete implementations of these constructs on some platforms, such allocation was deemed unacceptable at the time this library was originally written, and thus the factory pattern was not used.
Instead, a somewhat abstruse - but effective - technique was chosen to provide the necessary data/implementation hiding. This technique uses private void pointers to encapsulate object private data. The void pointers actually point at concrete data structures, but give a uniform interface to the dso.
The design goal of OpenThreads is to construct optimized implementations using platform optimized multi-processing constructs such as the sproc methods used on IRIX, and Windows threads.
These software products use OpenSceneGraph: